Reusing software code is a common practice. A routine or group of routines may be developed, tested, and used over a long period of time with a high degree of confidence. Rather than re-write the routines, new applications may incorporate the previous routines into the new application. This practice cuts down on development time, but also increases the reliability of the overall applications, since it may be built on code that is tested and known.
Code is frequently reused within a specific programming environment. Many programming environments have mechanisms for developing and sharing libraries of routines. When code is shared, there are some metadata that are known about the code. For example, a routine may have certain parameters as input and may return other parameters. The input parameters may have a simple type specification, such as integer or string, but the input parameters may also have specific formatting or range limitations, as may the output parameters. In order to properly use the routine, a programmer will provide the input parameters within the constraints of the routine.
While many programming environments may have different mechanisms for expressing the dependencies of a routine, the mechanisms often do not work across different programming environments.